package com.maxjay.component.metadata.model;

import java.io.Serializable;
import java.util.List;

import com.maxjay.component.metadata.core.interceptor.EntityInterceptor;

/**
 * 实体对象
 * 
 * @author zhaixm
 *
 */
public interface Entity extends Serializable {
	
	/**
	 * 实体对象唯一标识
	 * 
	 * @return
	 */
	String getId();

	/**
	 * 实体对象英文名称
	 * 
	 * @return
	 */
	String getName();
	
	/**
	 * 实体对象中文名
	 * 
	 * @return
	 */
	String getNameCn();
	
	/**
	 * 实体对象对应的数据表名
	 * 
	 * @return
	 */
	String getTabName();
	
	/*
	获取实体查询组装SQL
	String getEntityQrySql();
	
	 获取实体新增SQL
	String getEntityCreateSql();
	*/
	
	/**
	 * 向实体中添加字段
	 * 
	 * @param field
	 */
	void addEntityField(EntityField field);
	
	/**
	 * 通过属性名获取相应的属性
	 * 
	 * @param fieldName
	 * @return
	 */
	EntityField getEntityFieldByName(String fieldName);
	
	/**
	 * 通过属性ID获取相应的属性
	 * 
	 * @param fieldId
	 * @return
	 */
	EntityField getEntityFieldById(String fieldId);
	
	/**
	 * 取得主键字段
	 * 
	 * @return
	 */
	EntityField getKeyField();
	
	/**
	 * 取得实体中的所有字段
	 * 
	 * @return
	 */
	List<EntityField> getEntityFields();
	
	/**
	 * 获取实体对象的拦截器
	 * 
	 * @return
	 */
	List<EntityInterceptor> getEntityInterceptors();
	
	/**
	 * 获取实体对象配置信息
	 * 
	 * @return
	 */
	EntityConfig getEntityConfig();
	
}
